﻿using Onshi.POS.AccesoDatos.Interfaces;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace Onshi.POS.AccesoDatos
{
    public class ServicioDatosDescuentosRecargosFechasHoras : ServicioDatosBase, IServicioDatosDescuentosRecargosFechasHoras
    {
        #region Metodos

        public DataSet DescuentosRecargosFechasHoras_DevolverTodos()
        {
            try
            {
                var cm = new SqlCommand("DescuentosRecargosFechasHoras_DevolverTodos", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                var da = new SqlDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public DataSet DescuentosRecargosFechasHoras_DevolverPorId(Int32 idDescuentoRecargoFechaHora)
        {
            try
            {
                var cm = new SqlCommand("DescuentosRecargosFechasHoras_DevolverPorId", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@IdDescuentoRecargoFechaHora", idDescuentoRecargoFechaHora);
                var da = new SqlDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public Int32 DescuentosRecargosFechasHoras_Insertar(String nombre, String observaciones, DateTime fechaDesde, DateTime fechaHasta, Boolean lunes, Boolean martes, Boolean miercoles, Boolean jueves, Boolean viernes, Boolean sabado, Boolean domingo, TimeSpan horaDesde, TimeSpan horaHasta, Decimal descuentoRecargo)
        {
            try
            {
                var cm = new SqlCommand("DescuentosRecargosFechasHoras_Insertar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@Nombre", nombre);
                cm.Parameters.AddWithValue("@Observaciones", observaciones);
                cm.Parameters.AddWithValue("@FechaDesde", fechaDesde);
                cm.Parameters.AddWithValue("@FechaHasta", fechaHasta);
                cm.Parameters.AddWithValue("@Lunes", lunes);
                cm.Parameters.AddWithValue("@Martes", martes);
                cm.Parameters.AddWithValue("@Miercoles", miercoles);
                cm.Parameters.AddWithValue("@Jueves", jueves);
                cm.Parameters.AddWithValue("@Viernes", viernes);
                cm.Parameters.AddWithValue("@Sabado", sabado);
                cm.Parameters.AddWithValue("@Domingo", domingo);
                cm.Parameters.AddWithValue("@HoraDesde", horaDesde);
                cm.Parameters.AddWithValue("@HoraHasta", horaHasta);
                cm.Parameters.AddWithValue("@DescuentoRecargo", descuentoRecargo);
                cm.Connection.Open();
                return Convert.ToInt32(cm.ExecuteScalar());
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void DescuentosRecargosFechasHoras_Modificar(Int32 idDescuentoRecargoFechaHora, String nombre, String observaciones, DateTime fechaDesde, DateTime fechaHasta, Boolean lunes, Boolean martes, Boolean miercoles, Boolean jueves, Boolean viernes, Boolean sabado, Boolean domingo, TimeSpan horaDesde, TimeSpan horaHasta, Decimal descuentoRecargo)
        {
            try
            {
                var cm = new SqlCommand("DescuentosRecargosFechasHoras_Modificar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@IdDescuentoRecargoFechaHora", idDescuentoRecargoFechaHora);
                cm.Parameters.AddWithValue("@Nombre", nombre);
                cm.Parameters.AddWithValue("@Observaciones", observaciones);
                cm.Parameters.AddWithValue("@FechaDesde", fechaDesde);
                cm.Parameters.AddWithValue("@FechaHasta", fechaHasta);
                cm.Parameters.AddWithValue("@Lunes", lunes);
                cm.Parameters.AddWithValue("@Martes", martes);
                cm.Parameters.AddWithValue("@Miercoles", miercoles);
                cm.Parameters.AddWithValue("@Jueves", jueves);
                cm.Parameters.AddWithValue("@Viernes", viernes);
                cm.Parameters.AddWithValue("@Sabado", sabado);
                cm.Parameters.AddWithValue("@Domingo", domingo);
                cm.Parameters.AddWithValue("@HoraDesde", horaDesde);
                cm.Parameters.AddWithValue("@HoraHasta", horaHasta);
                cm.Parameters.AddWithValue("@DescuentoRecargo", descuentoRecargo);
                cm.Connection.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void DescuentosRecargosFechasHoras_Eliminar(Int32 idDescuentoRecargoFechaHora)
        {
            try
            {
                var cm = new SqlCommand("DescuentosRecargosFechasHoras_Eliminar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.AddWithValue("@IdDescuentoRecargoFechaHora", idDescuentoRecargoFechaHora);
                cm.Connection.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        #endregion
    }
}
